<template>
  <div>
<!-- <div class="download” @click="downloadpricess">下载价格表</div> -->
        <el-button @click="downloadpricess">下载</el-button>
  </div>
</template>

<script>
import Docxtemplater from 'docxtemplater'
import { saveAs } from 'file-saver'
import JSZip from 'jszip'
import JSZipUtils from 'jszip-utils'
export default {
  data() {
    return {
      // 导出价格表全部信息
      exportPriceObj: {
        actualPayFee: '179.55',
        deliveryFee: '0.00',
        discountActualFee: '179.55',
        discountFee: '9.45',
        discountRatio: '95',
        nickName: '张三',
        retailTotalFee: '0.00',
        totalFee: '189.00'
      },
      // 导出价格表商品信息
      exportPriceListOne: [
        {
          productColor: '白色',
          productName: '0909测试商品',
          productNo: 1,
          productSize: '4XL（58）',
          productSkuId: 'teydnkn',
          sellingPrice: '10.00'
        },
        {
          productColor: '白色',
          productName: '1955测试商品',
          productNo: 2,
          productSize: 'XL（52）',
          productSkuId: 'teydoja',
          sellingPrice: '40.00'
        },
        {
          productColor: '白色',
          productName: '1955测试商品',
          productNo: 2,
          productSize: 'XL（52）',
          productSkuId: 'teydoja',
          sellingPrice: '40.00'
        },
        {
          productColor: '白色',
          productName: '1955测试商品',
          productNo: 2,
          productSize: 'XL（52）',
          productSkuId: 'teydoja',
          sellingPrice: '40.00'
        },
        {
          productColor: '白色',
          productName: '1955测试商品',
          productNo: 2,
          productSize: 'XL（52）',
          productSkuId: 'teydoja',
          sellingPrice: '40.00'
        },
        {
          productColor: '白色',
          productName: '1955测试商品',
          productNo: 2,
          productSize: 'XL（52）',
          productSkuId: 'teydoja',
          sellingPrice: '40.00'
        }
      ]
    }
  },
  methods: {
    // 下载价格表
    downloadpricess() {
      const _this = this
      console.log('_this', _this)
      // 判断有无附加商品来选择word模版
      // 读取并获得模板文件的二进制内容
      JSZipUtils.getBinaryContent('pricenew.docx', function(error, content) {
        console.log('-----', content)
        // input.docx是模板。我们在导出的时候，会根据此模板来导出对应的数据
        // 抛出异常
        if (error) {
          throw error
        }
        // 创建一个JSZip实例，内容为模板的内容
        const zip = new JSZip(content)
        console.log('+++++', zip)
        // 创建并加载docxtemplater实例对象
        const doc = new Docxtemplater()
        console.log('/////', doc)
        doc.loadZip(zip)
        console.log('=====', doc)
        // 设置模板变量的值
        doc.setData({
          // 导出价格表全部信息
          ..._this.exportPriceObj,
          // 导出价格表商品信息
          tableone: _this.exportPriceListOne
        })
        try {
          // 用模板变量的值替换所有模板变量
          doc.render()
        } catch (error) {
          // 抛出异常
          const e = {
            message: error.message,
            name: error.name,
            stack: error.stack,
            properties: error.properties
          }
          console.log(JSON.stringify({ error: e }))
          throw error
        }
        // 生成一个代表docxtemplater对象的zip文件（不是一个真实的文件，而是在内存中的表示）
        const out = doc.getZip().generate({
          type: 'blob',
          mimeType:
        'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
        })
        // 将目标文件对象保存为目标类型的文件，并命名
        saveAs(out, _this.exportPriceObj.nickName + '的价格表.docx')
      })
    }
  }
}
</script>

<style>

</style>
